// Copyright 2018-2020 Polyaxon, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
 * Polyaxon SDKs and REST API specification.
 * Polyaxon SDKs and REST API specification.
 *
 * The version of the OpenAPI document: 1.3.4
 * Contact: contact@polyaxon.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 *
 */


import ApiClient from "../ApiClient";
import RuntimeError from '../model/RuntimeError';
import V1ArtifactTree from '../model/V1ArtifactTree';
import V1Auth from '../model/V1Auth';
import V1EntitiesTags from '../model/V1EntitiesTags';
import V1EntityNotificationBody from '../model/V1EntityNotificationBody';
import V1EntityStatusBodyRequest from '../model/V1EntityStatusBodyRequest';
import V1EventsResponse from '../model/V1EventsResponse';
import V1ListBookmarksResponse from '../model/V1ListBookmarksResponse';
import V1ListRunArtifactsResponse from '../model/V1ListRunArtifactsResponse';
import V1ListRunsResponse from '../model/V1ListRunsResponse';
import V1Logs from '../model/V1Logs';
import V1OperationBody from '../model/V1OperationBody';
import V1ProjectEntityResourceRequest from '../model/V1ProjectEntityResourceRequest';
import V1Run from '../model/V1Run';
import V1RunArtifact from '../model/V1RunArtifact';
import V1RunArtifacts from '../model/V1RunArtifacts';
import V1RunSettings from '../model/V1RunSettings';
import V1Status from '../model/V1Status';
import V1Uuids from '../model/V1Uuids';

/**
* RunsV1 service.
* @module api/RunsV1Api
* @version 1.3.4
*/
export default class RunsV1Api {

    /**
    * Constructs a new RunsV1Api. 
    * Polyaxon sdk
    * @alias module:api/RunsV1Api
    * @class
    * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
    * default to {@link module:ApiClient#instance} if unspecified.
    */
    constructor(apiClient) {
        this.apiClient = apiClient || ApiClient.instance;
    }


    /**
     * Callback function to receive the result of the approveRun operation.
     * @callback module:api/RunsV1Api~approveRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Approve run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~approveRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    approveRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling approveRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling approveRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling approveRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/approve', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the approveRuns operation.
     * @callback module:api/RunsV1Api~approveRunsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Approve runs
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {module:model/V1Uuids} body Uuids of the entities
     * @param {module:api/RunsV1Api~approveRunsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    approveRuns(owner, project, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling approveRuns");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling approveRuns");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling approveRuns");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/approve', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the archiveRun operation.
     * @callback module:api/RunsV1Api~archiveRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Archive run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~archiveRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    archiveRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling archiveRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling archiveRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling archiveRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/archive', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the bookmarkRun operation.
     * @callback module:api/RunsV1Api~bookmarkRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Bookmark run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~bookmarkRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    bookmarkRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling bookmarkRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling bookmarkRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling bookmarkRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/bookmark', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the bookmarkRuns operation.
     * @callback module:api/RunsV1Api~bookmarkRunsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Bookmark runs
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {module:model/V1Uuids} body Uuids of the entities
     * @param {module:api/RunsV1Api~bookmarkRunsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    bookmarkRuns(owner, project, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling bookmarkRuns");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling bookmarkRuns");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling bookmarkRuns");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/bookmark', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the collectRunLogs operation.
     * @callback module:api/RunsV1Api~collectRunLogsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Collect run logs
     * @param {String} namespace 
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {String} kind Kind of the entity
     * @param {module:api/RunsV1Api~collectRunLogsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    collectRunLogs(namespace, owner, project, uuid, kind, callback) {
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling collectRunLogs");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling collectRunLogs");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling collectRunLogs");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling collectRunLogs");
      }
      // verify the required parameter 'kind' is set
      if (kind === undefined || kind === null) {
        throw new Error("Missing the required parameter 'kind' when calling collectRunLogs");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid,
        'kind': kind
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/_internal/{owner}/{project}/runs/{uuid}/{kind}/logs', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the copyRun operation.
     * @callback module:api/RunsV1Api~copyRunCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Run} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Restart run with copy
     * @param {String} entity_owner Owner of the namespace
     * @param {String} entity_project Project
     * @param {String} entity_uuid Uuid identifier of the entity
     * @param {module:model/V1Run} body Run object
     * @param {module:api/RunsV1Api~copyRunCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Run}
     */
    copyRun(entity_owner, entity_project, entity_uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'entity_owner' is set
      if (entity_owner === undefined || entity_owner === null) {
        throw new Error("Missing the required parameter 'entity_owner' when calling copyRun");
      }
      // verify the required parameter 'entity_project' is set
      if (entity_project === undefined || entity_project === null) {
        throw new Error("Missing the required parameter 'entity_project' when calling copyRun");
      }
      // verify the required parameter 'entity_uuid' is set
      if (entity_uuid === undefined || entity_uuid === null) {
        throw new Error("Missing the required parameter 'entity_uuid' when calling copyRun");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling copyRun");
      }

      let pathParams = {
        'entity.owner': entity_owner,
        'entity.project': entity_project,
        'entity.uuid': entity_uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = V1Run;
      return this.apiClient.callApi(
        '/api/v1/{entity.owner}/{entity.project}/runs/{entity.uuid}/copy', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the createRun operation.
     * @callback module:api/RunsV1Api~createRunCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Run} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Create new run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {module:model/V1OperationBody} body operation object
     * @param {module:api/RunsV1Api~createRunCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Run}
     */
    createRun(owner, project, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling createRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling createRun");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling createRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = V1Run;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the createRunArtifactsLineage operation.
     * @callback module:api/RunsV1Api~createRunArtifactsLineageCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Create bulk run artifacts lineage
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:model/V1RunArtifacts} body Run Artifacts
     * @param {module:api/RunsV1Api~createRunArtifactsLineageCallback} callback The callback function, accepting three arguments: error, data, response
     */
    createRunArtifactsLineage(owner, project, uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling createRunArtifactsLineage");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling createRunArtifactsLineage");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling createRunArtifactsLineage");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling createRunArtifactsLineage");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/artifacts_lineage', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the createRunStatus operation.
     * @callback module:api/RunsV1Api~createRunStatusCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Status} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Create new run status
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:model/V1EntityStatusBodyRequest} body 
     * @param {module:api/RunsV1Api~createRunStatusCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Status}
     */
    createRunStatus(owner, project, uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling createRunStatus");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling createRunStatus");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling createRunStatus");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling createRunStatus");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = V1Status;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/statuses', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the deleteRun operation.
     * @callback module:api/RunsV1Api~deleteRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Delete run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~deleteRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    deleteRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling deleteRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling deleteRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling deleteRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}', 'DELETE',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the deleteRunArtifact operation.
     * @callback module:api/RunsV1Api~deleteRunArtifactCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Delete run artifact
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {Object} opts Optional parameters
     * @param {String} opts.path Path query param.
     * @param {module:api/RunsV1Api~deleteRunArtifactCallback} callback The callback function, accepting three arguments: error, data, response
     */
    deleteRunArtifact(namespace, owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling deleteRunArtifact");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling deleteRunArtifact");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling deleteRunArtifact");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling deleteRunArtifact");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'path': opts['path']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/artifact', 'DELETE',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the deleteRunArtifactLineage operation.
     * @callback module:api/RunsV1Api~deleteRunArtifactLineageCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Delete run artifact lineage
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {String} name Artifact name
     * @param {Object} opts Optional parameters
     * @param {String} opts.namespace namespace.
     * @param {module:api/RunsV1Api~deleteRunArtifactLineageCallback} callback The callback function, accepting three arguments: error, data, response
     */
    deleteRunArtifactLineage(owner, project, uuid, name, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling deleteRunArtifactLineage");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling deleteRunArtifactLineage");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling deleteRunArtifactLineage");
      }
      // verify the required parameter 'name' is set
      if (name === undefined || name === null) {
        throw new Error("Missing the required parameter 'name' when calling deleteRunArtifactLineage");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid,
        'name': name
      };
      let queryParams = {
        'namespace': opts['namespace']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/artifacts_lineage/{name}', 'DELETE',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the deleteRunArtifacts operation.
     * @callback module:api/RunsV1Api~deleteRunArtifactsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Delete run artifacts
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {Object} opts Optional parameters
     * @param {String} opts.path Path query param.
     * @param {module:api/RunsV1Api~deleteRunArtifactsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    deleteRunArtifacts(namespace, owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling deleteRunArtifacts");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling deleteRunArtifacts");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling deleteRunArtifacts");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling deleteRunArtifacts");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'path': opts['path']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/artifacts', 'DELETE',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the deleteRuns operation.
     * @callback module:api/RunsV1Api~deleteRunsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Delete runs
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {module:model/V1Uuids} body Uuids of the entities
     * @param {module:api/RunsV1Api~deleteRunsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    deleteRuns(owner, project, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling deleteRuns");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling deleteRuns");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling deleteRuns");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/delete', 'DELETE',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getMultiRunEvents operation.
     * @callback module:api/RunsV1Api~getMultiRunEventsCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1EventsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get multi runs events
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {module:model/String} kind The artifact kind
     * @param {Object} opts Optional parameters
     * @param {String} opts.names Names query param.
     * @param {String} opts.runs Runs query param.
     * @param {String} opts.orient Orient query param.
     * @param {Boolean} opts.force Force query param.
     * @param {module:api/RunsV1Api~getMultiRunEventsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1EventsResponse}
     */
    getMultiRunEvents(namespace, owner, project, kind, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling getMultiRunEvents");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getMultiRunEvents");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getMultiRunEvents");
      }
      // verify the required parameter 'kind' is set
      if (kind === undefined || kind === null) {
        throw new Error("Missing the required parameter 'kind' when calling getMultiRunEvents");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'kind': kind
      };
      let queryParams = {
        'names': opts['names'],
        'runs': opts['runs'],
        'orient': opts['orient'],
        'force': opts['force']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1EventsResponse;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/multi/events/{kind}', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRun operation.
     * @callback module:api/RunsV1Api~getRunCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Run} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~getRunCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Run}
     */
    getRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1Run;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunArtifact operation.
     * @callback module:api/RunsV1Api~getRunArtifactCallback
     * @param {String} error Error message, if any.
     * @param {String} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run artifact
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the experiement will be assigned
     * @param {String} uuid Unique integer identifier of the entity
     * @param {Object} opts Optional parameters
     * @param {String} opts.path Artifact filepath.
     * @param {Boolean} opts.stream Whether to stream the file.
     * @param {Boolean} opts.force Whether to force reload.
     * @param {module:api/RunsV1Api~getRunArtifactCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link String}
     */
    getRunArtifact(namespace, owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling getRunArtifact");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunArtifact");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunArtifact");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunArtifact");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'path': opts['path'],
        'stream': opts['stream'],
        'force': opts['force']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = 'String';
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/artifact', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunArtifactLineage operation.
     * @callback module:api/RunsV1Api~getRunArtifactLineageCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1RunArtifact} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run artifacts lineage
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {String} name Artifact name
     * @param {Object} opts Optional parameters
     * @param {String} opts.namespace namespace.
     * @param {module:api/RunsV1Api~getRunArtifactLineageCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1RunArtifact}
     */
    getRunArtifactLineage(owner, project, uuid, name, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunArtifactLineage");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunArtifactLineage");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunArtifactLineage");
      }
      // verify the required parameter 'name' is set
      if (name === undefined || name === null) {
        throw new Error("Missing the required parameter 'name' when calling getRunArtifactLineage");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid,
        'name': name
      };
      let queryParams = {
        'namespace': opts['namespace']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1RunArtifact;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/artifacts_lineage/{name}', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunArtifacts operation.
     * @callback module:api/RunsV1Api~getRunArtifactsCallback
     * @param {String} error Error message, if any.
     * @param {String} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run artifacts
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the experiement will be assigned
     * @param {String} uuid Unique integer identifier of the entity
     * @param {Object} opts Optional parameters
     * @param {String} opts.path Artifact filepath.
     * @param {Boolean} opts.force Whether to force reload.
     * @param {module:api/RunsV1Api~getRunArtifactsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link String}
     */
    getRunArtifacts(namespace, owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling getRunArtifacts");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunArtifacts");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunArtifacts");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunArtifacts");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'path': opts['path'],
        'force': opts['force']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = 'String';
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/artifacts', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunArtifactsLineage operation.
     * @callback module:api/RunsV1Api~getRunArtifactsLineageCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1ListRunArtifactsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run artifacts lineage
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {String} uuid Entity uuid
     * @param {Object} opts Optional parameters
     * @param {Number} opts.offset Pagination offset.
     * @param {Number} opts.limit Limit size.
     * @param {String} opts.sort Sort to order the search.
     * @param {String} opts.query Query filter the search search.
     * @param {module:api/RunsV1Api~getRunArtifactsLineageCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1ListRunArtifactsResponse}
     */
    getRunArtifactsLineage(owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunArtifactsLineage");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunArtifactsLineage");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunArtifactsLineage");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'offset': opts['offset'],
        'limit': opts['limit'],
        'sort': opts['sort'],
        'query': opts['query']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1ListRunArtifactsResponse;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/artifacts_lineage', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunArtifactsLineageNames operation.
     * @callback module:api/RunsV1Api~getRunArtifactsLineageNamesCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1ListRunArtifactsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run artifacts lineage names
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {String} uuid Entity uuid
     * @param {Object} opts Optional parameters
     * @param {Number} opts.offset Pagination offset.
     * @param {Number} opts.limit Limit size.
     * @param {String} opts.sort Sort to order the search.
     * @param {String} opts.query Query filter the search search.
     * @param {module:api/RunsV1Api~getRunArtifactsLineageNamesCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1ListRunArtifactsResponse}
     */
    getRunArtifactsLineageNames(owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunArtifactsLineageNames");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunArtifactsLineageNames");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunArtifactsLineageNames");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'offset': opts['offset'],
        'limit': opts['limit'],
        'sort': opts['sort'],
        'query': opts['query']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1ListRunArtifactsResponse;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/artifacts_lineage/names', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunArtifactsTree operation.
     * @callback module:api/RunsV1Api~getRunArtifactsTreeCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1ArtifactTree} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run artifacts tree
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {Object} opts Optional parameters
     * @param {String} opts.path Path query param.
     * @param {module:api/RunsV1Api~getRunArtifactsTreeCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1ArtifactTree}
     */
    getRunArtifactsTree(namespace, owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling getRunArtifactsTree");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunArtifactsTree");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunArtifactsTree");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunArtifactsTree");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'path': opts['path']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1ArtifactTree;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/artifacts/tree', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunEvents operation.
     * @callback module:api/RunsV1Api~getRunEventsCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1EventsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run events
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:model/String} kind The artifact kind
     * @param {Object} opts Optional parameters
     * @param {String} opts.names Names query param.
     * @param {String} opts.orient Orient query param.
     * @param {Boolean} opts.force Force query param.
     * @param {module:api/RunsV1Api~getRunEventsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1EventsResponse}
     */
    getRunEvents(namespace, owner, project, uuid, kind, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling getRunEvents");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunEvents");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunEvents");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunEvents");
      }
      // verify the required parameter 'kind' is set
      if (kind === undefined || kind === null) {
        throw new Error("Missing the required parameter 'kind' when calling getRunEvents");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid,
        'kind': kind
      };
      let queryParams = {
        'names': opts['names'],
        'orient': opts['orient'],
        'force': opts['force']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1EventsResponse;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/events/{kind}', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunLogs operation.
     * @callback module:api/RunsV1Api~getRunLogsCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Logs} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run logs
     * @param {String} namespace 
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {Object} opts Optional parameters
     * @param {Date} opts.last_time last time.
     * @param {String} opts.last_file last file.
     * @param {Boolean} opts.force Force query param.
     * @param {module:api/RunsV1Api~getRunLogsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Logs}
     */
    getRunLogs(namespace, owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling getRunLogs");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunLogs");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunLogs");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunLogs");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'last_time': opts['last_time'],
        'last_file': opts['last_file'],
        'force': opts['force']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1Logs;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/logs', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunNamespace operation.
     * @callback module:api/RunsV1Api~getRunNamespaceCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1RunSettings} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get Run namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~getRunNamespaceCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1RunSettings}
     */
    getRunNamespace(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunNamespace");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunNamespace");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunNamespace");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1RunSettings;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/namespace', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunResources operation.
     * @callback module:api/RunsV1Api~getRunResourcesCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1EventsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run resources events
     * @param {String} namespace namespace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {Object} opts Optional parameters
     * @param {String} opts.names Names query param.
     * @param {Boolean} opts.tail Query param flag to tail the values.
     * @param {Boolean} opts.force Force query param.
     * @param {module:api/RunsV1Api~getRunResourcesCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1EventsResponse}
     */
    getRunResources(namespace, owner, project, uuid, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling getRunResources");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunResources");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunResources");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunResources");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'names': opts['names'],
        'tail': opts['tail'],
        'force': opts['force']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1EventsResponse;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/resources', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunSettings operation.
     * @callback module:api/RunsV1Api~getRunSettingsCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1RunSettings} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get Run settings
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~getRunSettingsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1RunSettings}
     */
    getRunSettings(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunSettings");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunSettings");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunSettings");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1RunSettings;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/settings', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunStatuses operation.
     * @callback module:api/RunsV1Api~getRunStatusesCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Status} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get run statuses
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~getRunStatusesCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Status}
     */
    getRunStatuses(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunStatuses");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunStatuses");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling getRunStatuses");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1Status;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/statuses', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the getRunsArtifactsLineage operation.
     * @callback module:api/RunsV1Api~getRunsArtifactsLineageCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1ListRunArtifactsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Get runs artifacts lineage
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {Object} opts Optional parameters
     * @param {Number} opts.offset Pagination offset.
     * @param {Number} opts.limit Limit size.
     * @param {String} opts.sort Sort to order the search.
     * @param {String} opts.query Query filter the search search.
     * @param {module:api/RunsV1Api~getRunsArtifactsLineageCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1ListRunArtifactsResponse}
     */
    getRunsArtifactsLineage(owner, project, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling getRunsArtifactsLineage");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling getRunsArtifactsLineage");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
        'offset': opts['offset'],
        'limit': opts['limit'],
        'sort': opts['sort'],
        'query': opts['query']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1ListRunArtifactsResponse;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/artifacts_lineage', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the impersonateToken operation.
     * @callback module:api/RunsV1Api~impersonateTokenCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Auth} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Impersonate run token
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~impersonateTokenCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Auth}
     */
    impersonateToken(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling impersonateToken");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling impersonateToken");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling impersonateToken");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1Auth;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/impersonate', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the invalidateRun operation.
     * @callback module:api/RunsV1Api~invalidateRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Invalidate run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~invalidateRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    invalidateRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling invalidateRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling invalidateRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling invalidateRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/invalidate', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the invalidateRuns operation.
     * @callback module:api/RunsV1Api~invalidateRunsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Invalidate runs
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {module:model/V1Uuids} body Uuids of the entities
     * @param {module:api/RunsV1Api~invalidateRunsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    invalidateRuns(owner, project, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling invalidateRuns");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling invalidateRuns");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling invalidateRuns");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/invalidate', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the listArchivedRuns operation.
     * @callback module:api/RunsV1Api~listArchivedRunsCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1ListRunsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * List archived runs for user
     * @param {String} user User
     * @param {Object} opts Optional parameters
     * @param {Number} opts.offset Pagination offset.
     * @param {Number} opts.limit Limit size.
     * @param {String} opts.sort Sort to order the search.
     * @param {String} opts.query Query filter the search search.
     * @param {module:api/RunsV1Api~listArchivedRunsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1ListRunsResponse}
     */
    listArchivedRuns(user, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'user' is set
      if (user === undefined || user === null) {
        throw new Error("Missing the required parameter 'user' when calling listArchivedRuns");
      }

      let pathParams = {
        'user': user
      };
      let queryParams = {
        'offset': opts['offset'],
        'limit': opts['limit'],
        'sort': opts['sort'],
        'query': opts['query']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1ListRunsResponse;
      return this.apiClient.callApi(
        '/api/v1/archives/{user}/runs', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the listBookmarkedRuns operation.
     * @callback module:api/RunsV1Api~listBookmarkedRunsCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1ListBookmarksResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * List bookmarked runs for user
     * @param {String} user User
     * @param {Object} opts Optional parameters
     * @param {Number} opts.offset Pagination offset.
     * @param {Number} opts.limit Limit size.
     * @param {String} opts.sort Sort to order the search.
     * @param {String} opts.query Query filter the search search.
     * @param {module:api/RunsV1Api~listBookmarkedRunsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1ListBookmarksResponse}
     */
    listBookmarkedRuns(user, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'user' is set
      if (user === undefined || user === null) {
        throw new Error("Missing the required parameter 'user' when calling listBookmarkedRuns");
      }

      let pathParams = {
        'user': user
      };
      let queryParams = {
        'offset': opts['offset'],
        'limit': opts['limit'],
        'sort': opts['sort'],
        'query': opts['query']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1ListBookmarksResponse;
      return this.apiClient.callApi(
        '/api/v1/bookmarks/{user}/runs', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the listRuns operation.
     * @callback module:api/RunsV1Api~listRunsCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1ListRunsResponse} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * List runs
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {Object} opts Optional parameters
     * @param {Number} opts.offset Pagination offset.
     * @param {Number} opts.limit Limit size.
     * @param {String} opts.sort Sort to order the search.
     * @param {String} opts.query Query filter the search search.
     * @param {module:api/RunsV1Api~listRunsCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1ListRunsResponse}
     */
    listRuns(owner, project, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling listRuns");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling listRuns");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
        'offset': opts['offset'],
        'limit': opts['limit'],
        'sort': opts['sort'],
        'query': opts['query']
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = V1ListRunsResponse;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs', 'GET',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the notifyRunStatus operation.
     * @callback module:api/RunsV1Api~notifyRunStatusCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Notify run status
     * @param {String} namespace Na,espace
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:model/V1EntityNotificationBody} body 
     * @param {module:api/RunsV1Api~notifyRunStatusCallback} callback The callback function, accepting three arguments: error, data, response
     */
    notifyRunStatus(namespace, owner, project, uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'namespace' is set
      if (namespace === undefined || namespace === null) {
        throw new Error("Missing the required parameter 'namespace' when calling notifyRunStatus");
      }
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling notifyRunStatus");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling notifyRunStatus");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling notifyRunStatus");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling notifyRunStatus");
      }

      let pathParams = {
        'namespace': namespace,
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/streams/v1/{namespace}/{owner}/{project}/runs/{uuid}/notify', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the patchRun operation.
     * @callback module:api/RunsV1Api~patchRunCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Run} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Patch run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} run_uuid UUID
     * @param {module:model/V1Run} body Run object
     * @param {module:api/RunsV1Api~patchRunCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Run}
     */
    patchRun(owner, project, run_uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling patchRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling patchRun");
      }
      // verify the required parameter 'run_uuid' is set
      if (run_uuid === undefined || run_uuid === null) {
        throw new Error("Missing the required parameter 'run_uuid' when calling patchRun");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling patchRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'run.uuid': run_uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = V1Run;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{run.uuid}', 'PATCH',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the restartRun operation.
     * @callback module:api/RunsV1Api~restartRunCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Run} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Restart run
     * @param {String} entity_owner Owner of the namespace
     * @param {String} entity_project Project
     * @param {String} entity_uuid Uuid identifier of the entity
     * @param {module:model/V1Run} body Run object
     * @param {module:api/RunsV1Api~restartRunCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Run}
     */
    restartRun(entity_owner, entity_project, entity_uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'entity_owner' is set
      if (entity_owner === undefined || entity_owner === null) {
        throw new Error("Missing the required parameter 'entity_owner' when calling restartRun");
      }
      // verify the required parameter 'entity_project' is set
      if (entity_project === undefined || entity_project === null) {
        throw new Error("Missing the required parameter 'entity_project' when calling restartRun");
      }
      // verify the required parameter 'entity_uuid' is set
      if (entity_uuid === undefined || entity_uuid === null) {
        throw new Error("Missing the required parameter 'entity_uuid' when calling restartRun");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling restartRun");
      }

      let pathParams = {
        'entity.owner': entity_owner,
        'entity.project': entity_project,
        'entity.uuid': entity_uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = V1Run;
      return this.apiClient.callApi(
        '/api/v1/{entity.owner}/{entity.project}/runs/{entity.uuid}/restart', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the restoreRun operation.
     * @callback module:api/RunsV1Api~restoreRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Restore run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~restoreRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    restoreRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling restoreRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling restoreRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling restoreRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/restore', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the resumeRun operation.
     * @callback module:api/RunsV1Api~resumeRunCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Run} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Resume run
     * @param {String} entity_owner Owner of the namespace
     * @param {String} entity_project Project
     * @param {String} entity_uuid Uuid identifier of the entity
     * @param {module:model/V1Run} body Run object
     * @param {module:api/RunsV1Api~resumeRunCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Run}
     */
    resumeRun(entity_owner, entity_project, entity_uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'entity_owner' is set
      if (entity_owner === undefined || entity_owner === null) {
        throw new Error("Missing the required parameter 'entity_owner' when calling resumeRun");
      }
      // verify the required parameter 'entity_project' is set
      if (entity_project === undefined || entity_project === null) {
        throw new Error("Missing the required parameter 'entity_project' when calling resumeRun");
      }
      // verify the required parameter 'entity_uuid' is set
      if (entity_uuid === undefined || entity_uuid === null) {
        throw new Error("Missing the required parameter 'entity_uuid' when calling resumeRun");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling resumeRun");
      }

      let pathParams = {
        'entity.owner': entity_owner,
        'entity.project': entity_project,
        'entity.uuid': entity_uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = V1Run;
      return this.apiClient.callApi(
        '/api/v1/{entity.owner}/{entity.project}/runs/{entity.uuid}/resume', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the startRunTensorboard operation.
     * @callback module:api/RunsV1Api~startRunTensorboardCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Start run tensorboard
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:model/V1ProjectEntityResourceRequest} body 
     * @param {module:api/RunsV1Api~startRunTensorboardCallback} callback The callback function, accepting three arguments: error, data, response
     */
    startRunTensorboard(owner, project, uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling startRunTensorboard");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling startRunTensorboard");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling startRunTensorboard");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling startRunTensorboard");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/tensorboard/start', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the stopRun operation.
     * @callback module:api/RunsV1Api~stopRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Stop run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~stopRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    stopRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling stopRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling stopRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling stopRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/stop', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the stopRunTensorboard operation.
     * @callback module:api/RunsV1Api~stopRunTensorboardCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Stop run tensorboard
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~stopRunTensorboardCallback} callback The callback function, accepting three arguments: error, data, response
     */
    stopRunTensorboard(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling stopRunTensorboard");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling stopRunTensorboard");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling stopRunTensorboard");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/tensorboard/stop', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the stopRuns operation.
     * @callback module:api/RunsV1Api~stopRunsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Stop runs
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {module:model/V1Uuids} body Uuids of the entities
     * @param {module:api/RunsV1Api~stopRunsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    stopRuns(owner, project, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling stopRuns");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling stopRuns");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling stopRuns");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/stop', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the tagRuns operation.
     * @callback module:api/RunsV1Api~tagRunsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Tag runs
     * @param {String} owner Owner of the namespace
     * @param {String} project Project under namesapce
     * @param {module:model/V1EntitiesTags} body Data
     * @param {module:api/RunsV1Api~tagRunsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    tagRuns(owner, project, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling tagRuns");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling tagRuns");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling tagRuns");
      }

      let pathParams = {
        'owner': owner,
        'project': project
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/tag', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the unbookmarkRun operation.
     * @callback module:api/RunsV1Api~unbookmarkRunCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Unbookmark run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project
     * @param {String} uuid Uuid identifier of the entity
     * @param {module:api/RunsV1Api~unbookmarkRunCallback} callback The callback function, accepting three arguments: error, data, response
     */
    unbookmarkRun(owner, project, uuid, callback) {
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling unbookmarkRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling unbookmarkRun");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling unbookmarkRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = [];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/unbookmark', 'DELETE',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the updateRun operation.
     * @callback module:api/RunsV1Api~updateRunCallback
     * @param {String} error Error message, if any.
     * @param {module:model/V1Run} data The data returned by the service call.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Update run
     * @param {String} owner Owner of the namespace
     * @param {String} project Project where the run will be assigned
     * @param {String} run_uuid UUID
     * @param {module:model/V1Run} body Run object
     * @param {module:api/RunsV1Api~updateRunCallback} callback The callback function, accepting three arguments: error, data, response
     * data is of type: {@link module:model/V1Run}
     */
    updateRun(owner, project, run_uuid, body, callback) {
      let postBody = body;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling updateRun");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling updateRun");
      }
      // verify the required parameter 'run_uuid' is set
      if (run_uuid === undefined || run_uuid === null) {
        throw new Error("Missing the required parameter 'run_uuid' when calling updateRun");
      }
      // verify the required parameter 'body' is set
      if (body === undefined || body === null) {
        throw new Error("Missing the required parameter 'body' when calling updateRun");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'run.uuid': run_uuid
      };
      let queryParams = {
      };
      let headerParams = {
      };
      let formParams = {
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['application/json'];
      let accepts = ['application/json'];
      let returnType = V1Run;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{run.uuid}', 'PUT',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the uploadRunArtifact operation.
     * @callback module:api/RunsV1Api~uploadRunArtifactCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Upload an artifact file to a store via run access
     * @param {String} owner Owner of the namespace
     * @param {String} project Project having access to the store
     * @param {String} uuid Unique integer identifier of the entity
     * @param {File} uploadfile The file to upload.
     * @param {Object} opts Optional parameters
     * @param {String} opts.path File path query params.
     * @param {Boolean} opts.overwrite File path query params.
     * @param {module:api/RunsV1Api~uploadRunArtifactCallback} callback The callback function, accepting three arguments: error, data, response
     */
    uploadRunArtifact(owner, project, uuid, uploadfile, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling uploadRunArtifact");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling uploadRunArtifact");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling uploadRunArtifact");
      }
      // verify the required parameter 'uploadfile' is set
      if (uploadfile === undefined || uploadfile === null) {
        throw new Error("Missing the required parameter 'uploadfile' when calling uploadRunArtifact");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'path': opts['path'],
        'overwrite': opts['overwrite']
      };
      let headerParams = {
      };
      let formParams = {
        'uploadfile': uploadfile
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['multipart/form-data'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/artifacts/upload', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }

    /**
     * Callback function to receive the result of the uploadRunLogs operation.
     * @callback module:api/RunsV1Api~uploadRunLogsCallback
     * @param {String} error Error message, if any.
     * @param data This operation does not return a value.
     * @param {String} response The complete HTTP response.
     */

    /**
     * Upload a logs file to a store via run access
     * @param {String} owner Owner of the namespace
     * @param {String} project Project having access to the store
     * @param {String} uuid Unique integer identifier of the entity
     * @param {File} uploadfile The file to upload.
     * @param {Object} opts Optional parameters
     * @param {String} opts.path File path query params.
     * @param {Boolean} opts.overwrite File path query params.
     * @param {module:api/RunsV1Api~uploadRunLogsCallback} callback The callback function, accepting three arguments: error, data, response
     */
    uploadRunLogs(owner, project, uuid, uploadfile, opts, callback) {
      opts = opts || {};
      let postBody = null;
      // verify the required parameter 'owner' is set
      if (owner === undefined || owner === null) {
        throw new Error("Missing the required parameter 'owner' when calling uploadRunLogs");
      }
      // verify the required parameter 'project' is set
      if (project === undefined || project === null) {
        throw new Error("Missing the required parameter 'project' when calling uploadRunLogs");
      }
      // verify the required parameter 'uuid' is set
      if (uuid === undefined || uuid === null) {
        throw new Error("Missing the required parameter 'uuid' when calling uploadRunLogs");
      }
      // verify the required parameter 'uploadfile' is set
      if (uploadfile === undefined || uploadfile === null) {
        throw new Error("Missing the required parameter 'uploadfile' when calling uploadRunLogs");
      }

      let pathParams = {
        'owner': owner,
        'project': project,
        'uuid': uuid
      };
      let queryParams = {
        'path': opts['path'],
        'overwrite': opts['overwrite']
      };
      let headerParams = {
      };
      let formParams = {
        'uploadfile': uploadfile
      };

      let authNames = ['ApiKey'];
      let contentTypes = ['multipart/form-data'];
      let accepts = ['application/json'];
      let returnType = null;
      return this.apiClient.callApi(
        '/api/v1/{owner}/{project}/runs/{uuid}/logs/upload', 'POST',
        pathParams, queryParams, headerParams, formParams, postBody,
        authNames, contentTypes, accepts, returnType, null, callback
      );
    }


}
